From 2c24a9f3748eec46eeeb22ee96fafec0b8298c7a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 28 Feb 2005 04:43:22 +0000 Subject: [PATCH] Improve the handling of buttons as action proxys. (#165534, Milosz 2005-02-27 Matthias Clasen * gtk/gtkaction.c (connect_proxy): Improve the handling of buttons as action proxys. (#165534, Milosz Derezynski) --- ChangeLog | 3 +++ ChangeLog.pre-2-10 | 3 +++ ChangeLog.pre-2-8 | 3 +++ gtk/gtkaction.c | 43 ++++++++++++++++++++++++++++++++++--------- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index f35e58f00a..68447d8451 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-02-27 Matthias Clasen + * gtk/gtkaction.c (connect_proxy): Improve the handling + of buttons as action proxys. (#165534, Milosz Derezynski) + * gtk/gtklabel.c (gtk_label_size_request): Fix a typo. (#168646, Vincent Untz) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index f35e58f00a..68447d8451 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,8 @@ 2005-02-27 Matthias Clasen + * gtk/gtkaction.c (connect_proxy): Improve the handling + of buttons as action proxys. (#165534, Milosz Derezynski) + * gtk/gtklabel.c (gtk_label_size_request): Fix a typo. (#168646, Vincent Untz) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index f35e58f00a..68447d8451 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,8 @@ 2005-02-27 Matthias Clasen + * gtk/gtkaction.c (connect_proxy): Improve the handling + of buttons as action proxys. (#165534, Milosz Derezynski) + * gtk/gtklabel.c (gtk_label_size_request): Fix a typo. (#168646, Vincent Untz) diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c index bb3c4242d3..c33f915bf5 100644 --- a/gtk/gtkaction.c +++ b/gtk/gtkaction.c @@ -738,6 +738,17 @@ gtk_action_sync_stock_id (GtkAction *action, } } +static void +gtk_action_sync_button_stock_id (GtkAction *action, + GParamSpec *pspec, + GtkWidget *proxy) +{ + g_object_set (G_OBJECT (proxy), + "stock-id", + action->private_data->stock_id, + NULL); +} + static void gtk_action_sync_tooltip (GtkAction *action, GParamSpec *pspec, @@ -931,16 +942,30 @@ connect_proxy (GtkAction *action, else if (GTK_IS_BUTTON (proxy)) { /* button specific synchronisers ... */ - - /* synchronise the label */ - g_object_set (proxy, - "label", action->private_data->short_label, - "use_underline", TRUE, - NULL); - g_signal_connect_object (action, "notify::short-label", - G_CALLBACK (gtk_action_sync_short_label), - proxy, 0); + if (gtk_button_get_use_stock (GTK_BUTTON (proxy))) + { + /* synchronise stock-id */ + g_object_set (proxy, + "stock-id", action->private_data->stock_id, + NULL); + g_signal_connect_object (action, "notify::stock-id", + G_CALLBACK (gtk_action_sync_button_stock_id), + proxy, 0); + } + else if (GTK_IS_LABEL(GTK_BIN(proxy)->child)) + { + /* synchronise the label */ + g_object_set (proxy, + "label", action->private_data->short_label, + "use_underline", TRUE, + NULL); + g_signal_connect_object (action, "notify::short-label", + G_CALLBACK (gtk_action_sync_short_label), + proxy, 0); + + } + /* we leave the button alone if there is a custom child */ g_signal_connect_object (proxy, "clicked", G_CALLBACK (gtk_action_activate), action, G_CONNECT_SWAPPED); -- 2.30.2